﻿using System;

namespace SystemWnioskujacy
{
    public class Query
    {
        private QueryParameter[] Parameters = new QueryParameter[0];
        public int[] IDs = new int[0];

        public int Length
        {
            get
            {
                return Parameters.Length;
            }
        }

        public QueryParameter this[int i]
        {
            get
            {
                return Parameters[i];
            }
        }

        public void Add(QueryParameter nParam)
        {
            QueryParameter[] ntab = new QueryParameter[Parameters.Length + 1];

            Array.Copy(Parameters, ntab, Parameters.Length);
            ntab[ntab.Length - 1] = nParam;

            Parameters = ntab;
        }

        public void Remove(QueryParameter oParam)
        {
            for (int i = 0; i < Parameters.Length; i++)
            {
                if (Parameters[i].Equals(oParam))
                {
                    QueryParameter[] ntab = new QueryParameter[Parameters.Length - 1];

                    Array.Copy(Parameters, ntab, i);
                    Array.Copy(Parameters, i + 1, ntab, i, Parameters.Length - i - 1);

                    Parameters = ntab;
                    break;
                }
            }
        }

        public void Remove(int i)
        {
            if (Parameters.Length > i)
            {
                QueryParameter[] ntab = new QueryParameter[Parameters.Length - 1];

                Array.Copy(Parameters, ntab, i);
                Array.Copy(Parameters, i + 1, ntab, i, Parameters.Length - i - 1);

                Parameters = ntab;
            }
        }

        public void ClearVariables()
        {
            for (int i = 0; i < this.Length; i++)
            {
                if (this[i].IsVar) this[i].ClearValues();
            }
        }
    }
}
